﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _4._28._2015CsharpDay2
{
    class Program
    {
        static void Main(string[] args)
        {
            Animal animalObject = new Animal(0, "Fido", 10);
            Animal emptyAnimal = new Animal();


            Dog dogObject = new Dog("Lucky", 7, "black lab", "hair", 4);
            Dog emptyDOg = new Dog();

        }
    }
    /// <summary>
    /// This is an animal class
    /// </summary>
    public class Animal
    {
        /// <summary>
        /// The property holding the number of legs the animal has,
        /// </summary>
        public int NumLegs { get; set; }
        public int Age { get; set; }
        public string Name { get; set; }


        public Animal()
        { }

        /// <summary>
        /// Creates a new Animal object for us with the below constructor
        /// </summary>
        /// <param name="legs">The number of leg this animal has</param>
        /// <param name="name">The name of this animal</param>
        /// <param name="age"> How old the animal is</param>
        public Animal(int legs, string name, int age)
        {
            this.NumLegs = legs;
            this.Age = age;
            this.Name = name;
        }
    }
    //
    public class Dog: Animal
    {
        public string Breed { get; set; }
        public string HairColor { get; set; }
        public string Name { get; set; }
    
    public Dog()
        {

        }
        public Dog(string name, int age, string breed, string hair, int numLegs)
    {
        this.Name = name;
            this.Age = age;
            this.Breed = breed;
            this.HairColor = hair;
            this.NumLegs = numLegs;
    }
    }
}
/* Access modifiers
- public - global access
-Private - limited to only the class itself
- Protected - only the class itself, and any class that directly inherets from it
- internal- limited to the assembly
- internal protected
- Assembly- a dll or exe that is created when abstract project is made 

*/